import { request } from '../request';

/**
 * 获取项目列表
 *
 * @returns
 */
export function fetchProjects() {
  return request<Bn.Meta.MetaProject[]>({
    url: '/project/list',
    method: 'get'
  });
}

/**
 * 获取所有注册的数据源
 *
 * @returns
 */
export function fetchDatabases() {
  return request<Bn.Meta.MetaDatabase[]>({
    url: '/meta/database/list',
    method: 'get'
  });
}

/**
 * 获取所有注册的数据源
 *
 * @returns
 */
export function fetchWarehouses() {
  return request<Bn.Meta.MetaWarehouse[]>({
    url: '/meta/warehouse/list',
    method: 'get'
  });
}

/**
 * 抽取目标数据库中所有的数据表
 *
 * @param db_name 数据库名称
 */
export function fetchExtractTables(db_name: string) {
  return request<Bn.Meta.MetaTable[]>({
    url: `/extract/tables/db/${db_name}`,
    method: 'get'
  });
}

/**
 * 抽取目标数据库中所有的字段
 *
 * @param db_name 数据库名称
 * @param table_name 数据表名称
 */
export function fetchExtractColumns(db_name: string, table_name: string) {
  return request<Bn.Meta.MetaColumn[]>({
    url: `/extract/columns/db/${db_name}/table/${table_name}`,
    method: 'get'
  });
}

/**
 * 保存数据表和字段列表
 *
 * @param table 数据表对象
 * @returns 返回数据表Id
 */
export function saveTable(table: Bn.Meta.MetaTable) {
  return request<number>({
    url: `/meta/table/save`,
    method: 'post',
    data: table
  });
}
